package br.com.sadim.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import br.com.sadim.diagnostico.Doenca;

public class DoencaDAOHibernate implements DoencaDAO  {
	private Session session;
	public void setSession(Session s) {
		session = s;
	}
	
	@Override
	public void save(Doenca doenca) {
		session.save(doenca);
		
	}

	@Override
	public void delete(Doenca doenca) {
		session.delete(doenca);
		
	}

	@Override
	public void update(Doenca doenca) {
		session.update(doenca);
		
	}

	@Override
	public Doenca getById(Integer idDoenca) {
		return (Doenca) session.get(Doenca.class, idDoenca);
	}

	@Override
	public Doenca getByNome(String nome) {
		String hql = "SELECT S FROM br.com.sadim.diagnostico.Doenca S WHERE S.nome = :param";
		Query consulta = session.createQuery(hql);
		consulta.setString("param", nome);
		
		return (Doenca) consulta.uniqueResult();
	}
    
	@SuppressWarnings("unchecked")
	@Override
	public List<Doenca> getList() {
		return session.createCriteria(Doenca.class).list();
	}
	
	
	@SuppressWarnings("unchecked")
	@Override
	public List<Doenca> getBySintoma(Integer idSintoma) {
		String sql = "select doenca_idDoenca from doenca_sintoma where sintomas_idSintoma = :param ";
		Query consulta = session.createSQLQuery(sql);
		List<Integer> listaIdDoencas = new ArrayList<Integer>();
		listaIdDoencas = consulta.setString("param", idSintoma.toString()).list();
		List<Doenca> listaDoencas = new ArrayList<Doenca>();
		for (Integer id : listaIdDoencas){
			listaDoencas.add(getById(id));
		}
		return listaDoencas;
	}


}
